﻿#define _CRT_SECURE_NO_WARNINGS 1
#include<iostream>
#include<vector>
using namespace std;
//
//class Person
//{
//public:
//	// 进⼊校园/图书馆/实验室刷⼆维码等⾝份认证 
//	void identity()
//	{
//		cout << "void identity()" << _name << endl;
//		cout << _age << endl;
//	}
//protected:
//	string _name = "张三"; // 姓名 
//	string _address; // 地址 
//	string _tel; // 电话 
//private:
//	int _age = 18; // 年龄
//};
//// 虽然在子类中 父类的private 不可见
//// 但是我可以在子类中通过调用父类的成员函数，来间接调用private变量
//
//class Student : public Person
//{
//public:
//	// 学习 
//	void study()
//	{
//		// ...
//	}
//protected:
//	int _stuid; // 学号 
//};
//
//class Teacher : public Person
//{
//public:
//	// 授课 
//	void teaching()
//	{
//		//...
//	}
//protected:
//	string title; // 职称 
//};
//
//int main()
//{
//	Student s;
//	Teacher t;
//	s.identity();
//	t.identity();
//	return 0;
//}


namespace zgx
{
	template <class T>
	class stack : public vector<T>
	{
	public:
		void push(const T& x)
		{
			vector<T>::push_back(x);
			//按需实例化，发现找不到push_back
			//需要向编译器说一声你要给我实例化vector中的push_back
		}
		void pop()
		{
			vector<T>::pop_back();
		}
		const T& top()
		{
			return vector<T>::back();
		}
		bool empty()
		{
			return vector<T>::empty();
		}

	};
}

int main()
{
	zgx::stack<int> st;
	st.push(1);
	st.push(2);
	st.push(3);
	while (!st.empty())
	{
		cout << st.top() << " ";
		st.pop();
	}

	return 0;
	
}